/*、
 * 从客户端接收的数据记录类
 * Copyright (C) 2009  YuLicheng
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.sysmo.server.node.item;

import org.sysmo.db.DatabaseInterface;

/**
 * 数据记录类，此类中除了保存了Result对象中所包含的内容外，还保存了所属各层次对象名
 * 称，包括客户端节点名、监控项名、图表名和监控值名。
 *
 * @author YuLicheng
 */
public class ReceivedResult extends Result {
    private String nodeName;
    private String itemName;
    private String graphName;
    private String valueName;
    private Warning warning;

    /**
     * 创建从客户端获得的记录数据对象。
     *
     * @param dbInterface 数据库接口。
     * @param warning 记录包含的警告对象。
     * @param nodeName 记录所属的节点名称。
     * @param itemName 记录所属的监控项名称。
     * @param graphName 记录所属的图表名称。
     * @param valueName 记录所属的监控值名称。
     * @param dataTime 记录产生的时间。
     * @param resultValue 记录的值。
     */
    public ReceivedResult(DatabaseInterface dbInterface, Warning warning,
            String nodeName, String itemName, String graphName, 
            String valueName, long dataTime, int resultValue) {
        super(dbInterface);
        this.warning = warning;
        this.nodeName = nodeName;
        this.itemName = itemName;
        this.graphName = graphName;
        this.valueName = valueName;
        data.time = new java.sql.Date(dataTime);
        data.value = resultValue;
    }

    /**
     * 获取所属客户端节点名称。
     *
     * @return 所属客户端节点名称。
     */
    public String getNodeName() {
        return nodeName;
    }

    /**
     * 获取所属监控项名称。
     *
     * @return 所属监控项名称。
     */
    public String getItemName() {
        return itemName;
    }

    /**
     * 获取所属图表名称。
     *
     * @return 所属图表名称。
     */
    public String getGraphName() {
        return graphName;
    }

    /**
     * 获取所属监控值名称。
     *
     * @return 所属监控值名称。
     */
    public String getValueName() {
        return valueName;
    }

    /**
     * 获取相应警告信息。
     *
     * @return 警告对象。
     */
    public Warning getWarning() {
        return warning;
    }

    /**
     * 设置对应的监控值ID。
     *
     * @param id 监控值ID。
     */
    public void setValueID(int id) {
        data.vid = id;
    }
    
    /**
     * 将记录存入数据库。
     */
    public void saveData() {
        dbInterface.update_DataTable(data);
        if (warning != null) {
            warning.saveData();
        }
    }
}
